#include <sys/time.h>
#include <stddef.h>
#include "app_common.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

long app_common_getCurrentTime(void) {
    struct timeval tv;
    gettimeofday(&tv, NULL);
    return tv.tv_sec*1000 + tv.tv_usec/1000;
    // tv_sec: 秒 tv_usec: 微秒
}

// [abcd] => "61626364"
char *app_common_charsToHexstr(char *chars, int len)
{
    // 申请hexstr的内存
    char *hexstr = (char *)malloc(len*2 + 1);
    // 遍历字符数组中的每个字符，得到其对应的2位16进制字符，并保存到hexstr
    for (int i = 0; i < len; i++) {
        sprintf(hexstr+i*2, "%02X", chars[i]);
    }
    hexstr[len*2] = '\0';

    return hexstr;
}


// "61626364" => [abcd]
char *app_common_hexstrToChars(char *hexstr, int *chars_len) {

    // 得到hexstr的长度
    int hexstr_len = strlen(hexstr);
    // 保存字符数组的长度
    *chars_len = hexstr_len/2;
    // 申请chars的内存
    char *chars = (char *)malloc(hexstr_len/2);
    // 遍历hexstr中的每个字符（以2个为单位），得到对应的字符，并保存到chars
    for (int i = 0; i < hexstr_len; i += 2) {
        sscanf (hexstr+i, "%2X", (unsigned int *)(chars + i/2));
    }

    return chars;
}